Extended applications of multimedia content previews in the cloud-based content management system

ABSTRACT

Systems and methods for providing previews of files stored in an online content management system with collaboration environment and permitting a user to annotate the previews are disclosed. The system further tracks the frequency of access of content in previewed documents and provides a visual representation of the frequency with which sections in a document was viewed.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No.61/592,394 entitled “EXTENDED APPLICATIONS OF MULTIMEDIA CONTENTPREVIEWS IN THE CLOUD-BASED CONTENT MANAGEMENT SYSTEM,” which was filedJan. 30, 2012, the contents of which are incorporated by referenceherein.

This application is related to co-pending U.S. application Ser. No.13/152,982, entitled, “REAL TIME NOTIFICATION OF ACTIVITIES THAT OCCURIN A WEB-BASED COLLABORATION ENVIRONMENT”, filed Jun. 3, 2011; U.S.application Ser. No. 13/274,268, entitled “AUTOMATIC AND SEMI-AUTOMATICTAGGING FEATURES OF WORK ITEMS IN A SHARED WORKSPACE FOR METADATATRACKING IN A CLOUD-BASED CONTENT MANAGEMENT SYSTEM WITH SELECTIVE OROPTIONAL USER CONTRIBUTION”, filed Oct. 14, 2011; and U.S. applicationSer. No. 13/208,615, entitled “COLLABORATION SESSIONS IN A WORKSPACE ONA CLOUD-BASED CONTENT MANAGEMENT SYSTEM, filed Aug. 12, 2011, each ofwhich is incorporated in its entirety.

BACKGROUND

Online file storage systems typically provide a way for a user to uploadfiles to a storage server for backing up files, file access, and/or filedistribution. Some online file storage systems allow the user to previewthe contents of a file before or instead of downloading the file.

BRIEF DESCRIPTION OF THE DRAWINGS

Examples of a web-based content management system with a collaborationenvironment that provides previewing of files and permits annotating ofthe previewed files are illustrated in the figures. The examples andfigures are illustrative rather than limiting.

FIG. 1 illustrates an example diagram of a system where a host serverand conversion servers support previewing of files in an onlinecollaboration environment.

FIG. 2 depicts an example diagram of a web-based or online collaborationplatform deployed in an enterprise or other organizational setting fororganizing work items and workspaces.

FIG. 3A depicts a block diagram illustrating an example of components inthe host server of a web-based collaboration environment that supportspreviewing of files.

FIG. 3B depicts a block diagram illustrating an example of components inthe host server of a web-based collaboration environment with real timeactivity notification capabilities.

FIG. 3C depicts a block diagram illustrating an example of components ina notification server for providing real time or near real timenotifications of activities that occur in a web-based or onlinecollaboration environment.

FIG. 4A depicts a block diagram illustrating an example of components ina conversion server for converting an input file format of a file in aweb-based or online collaboration environment to a target file formatsuitable for providing a preview of the file.

FIG. 4B depicts a block diagram illustrating an example of components inan annotation module for supporting annotations of previews of files ina web-based or online collaboration environment.

FIG. 4C depicts a block diagram illustrating an example of components ina visual representation module for tracking user access of files andproviding visual representation of user access of the files.

FIG. 5 depicts a flow chart illustrating an example process fordetermining if a user has permission to access a file preview.

FIG. 6 depicts a flow chart illustrating an example process for findingan optimum path using different conversion tools for converting an inputfile format to a target file format.

FIG. 7 depicts a flow chart illustrating an example process forconverting a format of a video file to a target format for previewing.

FIG. 8 depicts a flow chart illustrating an example process forgenerating a progress indicator for indicating the amount of timeremaining until a file has been converted.

FIG. 9 shows a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed.

FIG. 10 depicts a screenshot showing an example of a user interface of afile page with a feed stream of real time or near real timenotifications of activities that occur in a web-based collaborationenvironment.

FIG. 11 depicts a screenshot showing an example of a user interface of apreview page with a feed stream of real time or near real timenotifications of activities that occur in a web-based collaborationenvironment.

FIG. 12 depicts a flow chart illustrating an example process forgenerating a preview of a PDF file.

FIG. 13 depicts a flow chart illustrating an example process forreceiving annotation commands for annotating a preview.

FIG. 14A depicts a flow chart illustrating an example process foracquiring data for a previewed file for providing a visualrepresentation of user access to the previewed file.

FIG. 14B depicts a flow chart illustrating an example process forpresenting a visual representation of user access for a file.

FIG. 15 depicts an example visual representation of user access for afile.

DETAILED DESCRIPTION

A system is described for providing content previews of files stored inan online content management system with a collaboration environment. Acontent preview provided by the system permits a user to view asupported file type without spending the time to download the file orneeding the software that created the file. Additionally, the systempermits a previewing user to annotate the preview, and the systemsupports streaming of the annotation data between collaborators'browsers to allow for real-time collaboration.

Further, the system can track the frequency of access of content inpreviewed documents and provide a visual representation of the frequencywith which sections in a document was viewed.

Various aspects and examples of the invention will now be described. Thefollowing description provides specific details for a thoroughunderstanding and enabling description of these examples. One skilled inthe art will understand, however, that the invention may be practicedwithout many of these details. Additionally, some well-known structuresor functions may not be shown or described in detail, so as to avoidunnecessarily obscuring the relevant description.

The terminology used in the description presented below is intended tobe interpreted in its broadest reasonable manner, even though it isbeing used in conjunction with a detailed description of certainspecific examples of the technology. Certain terms may even beemphasized below; however, any terminology intended to be interpreted inany restricted manner will be overtly and specifically defined as suchin this Detailed Description section.

FIG. 1 illustrates an example diagram of a system where a host server100 and conversion servers 400 support previewing of files for users 108in an online collaboration environment so that the users 108 do not haveto download the file to access its contents. Further, the host server100 and notification server 150 provide notifications of activities thatoccur in the online collaboration environment in real time or near realtime to users 108. Additionally, the system includes a repository 130,annotation files database 376, and graphic representation database 378.The repository 130 stores files uploaded to the web-based collaborationenvironment; the annotation files database 376 is used by an annotationmodule 481 to store annotations made by a user to a file beingpreviewed; and the visual representation database 378 is used by avisual representation module 391 to store tracking data of userspreviewing a document or video file.

The client devices 102 can be any system and/or device, and/or anycombination of devices/systems that is able to establish a connection,including wired, wireless, cellular connections with another device, aserver and/or other systems such as host server 100 and/or conversionservers 400. Client devices 102 will typically include a display and/orother output functionalities to present information and data exchangedbetween or among the devices 102 and/or the host server 100 and/orconversion servers 400. In one embodiment, this is only a singleconversion server 400. In one embodiment, there are multiple conversionservers 400 working independently. In other embodiments, a distributedqueuing system is used to run the conversion servers 400 in an efficientmanner.

For example, the client devices 102 can include mobile, hand held orportable devices or non-portable devices and can be any of, but notlimited to, a server desktop, a desktop computer, a computer cluster, orportable devices including, a notebook, a laptop computer, a handheldcomputer, a palmtop computer, a mobile phone, a cell phone, a smartphone, a PDA, a Blackberry device, a Treo, a handheld tablet (e.g. aniPad, a Galaxy, Xoom Tablet, etc.), a tablet PC, a thin-client, a handheld console, a hand held gaming device or console, an iPhone, and/orany other portable, mobile, hand held devices, etc. In one embodiment,the client devices 102, host server 100, and conversion servers 400 arecoupled via a network 106 and/or a network 108. In some embodiments, thedevices 102 and host server 100 may be directly connected to oneanother.

The input mechanism on client devices 102 can include touch screenkeypad (including single touch, multi-touch, gesture sensing in 2D or3D, etc.), a physical keypad, a mouse, a pointer, a track pad, motiondetector (e.g., including 1-axis, 2-axis, 3-axis accelerometer, etc.), alight sensor, capacitance sensor, resistance sensor, temperature sensor,proximity sensor, a piezoelectric device, device orientation detector(e.g., electronic compass, tilt sensor, rotation sensor, gyroscope,accelerometer), or a combination of the above.

Signals received or detected indicating user activity at client devices102 through one or more of the above input mechanism, or others, can beused in the disclosed technology by various users or collaborators(e.g., collaborators 108) for accessing, through network 106, aweb-based collaboration environment or online collaboration platform(e.g., hosted by the host server 100).

The collaboration platform or environment hosts workspaces with workitems that one or more users can access (e.g., view, edit, update,revise, comment, discussions, download, preview, tag, or otherwisemanipulate, etc.). A work item can generally include any type of digitalor electronic content that can be viewed or accessed via an electronicdevice (e.g., device 102). The digital content can include .pdf(Portable Document Format) files, .doc, slides (e.g., Powerpointslides), images, audio files, multimedia content, web pages, blogs, etc.A workspace can generally refer to any grouping of a set of digitalcontent in the collaboration platform. The grouping can be created,identified, or specified by a user or through other means. This user maybe a creator user or administrative user, for example.

In general, a workspace can be associated with a set of users orcollaborators (e.g., collaborators 108) which have access to the contentincluded therein. The levels of access (e.g., based on permissions orrules) of each user or collaborator to access the content in a givenworkspace may be the same or may vary among the users. Each user mayhave their own set of access rights to every piece of content in theworkspace, or each user may have different access rights to differentpieces of content. Access rights may be specified by a user associatedwith a work space and/or a user who created/uploaded a particular pieceof content to the workspace, or any other designated user orcollaborator.

In general, the collaboration platform allows multiple users orcollaborators to access or collaborate efforts on work items such thateach user can see, remotely, edits, revisions, comments, or annotationsbeing made to specific work items through their own user devices. Forexample, a user can upload a document to a work space for other users toaccess (e.g., for viewing, editing, commenting, discussing, signing-off,or otherwise manipulating). The user can login to the online platformand upload the document (or any other type of work item) to an existingwork space or to a new work space. The document can be shared withexisting users or collaborators in a work space.

A diagrammatic illustration of the online collaboration environment andthe relationships between workspaces and users/collaborators areillustrated with further reference to the example of FIG. 2.

In one embodiment, actions performed on work items or other activitiesthat occur in a work space can be detected in real time or in near realtime. In addition, users, collaborators, or select users can be notifiedin real time or near real-time of these actions or activities. Variousmechanisms can be used to notify users or collaborators, includingthrough the web interface to access the collaboration platform, viaemail, and/or SMS, for example.

Functions and techniques disclosed for providing previewing of files orwork items in the online platform can be performed by one or moredistributed conversion servers 400 of the collaboration platform.Functions and techniques performed by the host server 100, theconversion servers 400, and the related components therein aredescribed, respectively, in detail with further reference to theexamples of FIGS. 3A and 4A.

In one embodiment, client devices 102 communicate with the host server100 and/or conversion servers 400 over network 106. In general, network106, over which the client devices 102, the host server 100, and/orconversion servers 400 communicate, may be a cellular network, atelephonic network, an open network, such as the Internet, or a privatenetwork, such as an intranet and/or the extranet, or any combinationthereof. For example, the Internet can provide file transfer, remote login, email, news, RSS, cloud-based services, instant messaging, visualvoicemail, push mail, VoIP, and other services through any known orconvenient protocol, such as, but is not limited to the TCP/IP protocol,Open System Interconnections (OSI), FTP, UPnP, iSCSI, NSF, ISDN, PDH,RS-232, SDH, SONET, etc.

The network 106 can be any collection of distinct networks operatingwholly or partially in conjunction to provide connectivity to the clientdevices 102 and the host server 100 and may appear as one or morenetworks to the serviced systems and devices. In one embodiment,communications to and from the client devices 102 can be achieved by, anopen network, such as the Internet, or a private network, such as anintranet and/or the extranet. In one embodiment, communications can beachieved by a secure communications protocol, such as secure socketslayer (SSL), or transport layer security (TLS).

In addition, communications can be achieved via one or more networks,such as, but are not limited to, one or more of WiMax, a Local AreaNetwork (LAN), Wireless Local Area Network (WLAN), a Personal areanetwork (PAN), a Campus area network (CAN), a Metropolitan area network(MAN), a Wide area network (WAN), a Wireless wide area network (WWAN),enabled with technologies such as, by way of example, Global System forMobile Communications (GSM), Personal Communications Service (PCS),Digital Advanced Mobile Phone Service (D-Amps), Bluetooth, Wi-Fi, FixedWireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, 3G LTE, 3GPP LTE,LTE Advanced, mobile WiMax, WiMax 2, WirelessMAN-Advanced networks,enhanced data rates for GSM evolution (EDGE), General packet radioservice (GPRS), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA,UMTS-TDD, 1xRTT, EV-DO, messaging protocols such as, TCP/IP, SMS, MMS,extensible messaging and presence protocol (XMPP), real time messagingprotocol (RTMP), instant messaging and presence protocol (IMPP), instantmessaging, USSD, IRC, or any other wireless data networks or messagingprotocols.

FIG. 2 depicts an example diagram of a web-based or online collaborationplatform deployed in an enterprise or other organizational setting 250for organizing work items 215, 235, 255 and workspaces 205, 225, 245.

The web-based platform for collaborating on projects or jointly workingon documents can be used by individual users and shared amongcollaborators. In addition, the collaboration platform can be deployedin an organized setting including but not limited to, a company (e.g.,an enterprise setting), a department in a company, an academicinstitution, a department in an academic institution, a class or coursesetting, or any other types of organizations or organized setting.

When deployed in an organizational setting, multiple workspaces (e.g.,workspace A, B C) can be created to support different projects or avariety of work flows. Each workspace can have its own associated workitems. For example, work space A 205 may be associated with work items215, work space B 225 can be associated with work items 235, and workspace N 245 can be associated with work items 255. The work items 215,235, and 255 may be unique to each work space but need not be. Forexample, a particular word document can be associated with only one workspace (e.g., work space A 205) or it may be associated with multiplework spaces (e.g., Work space A 205 and work space B 225, etc.).

In general, each work space has a set of users or collaboratorsassociated with it. For example, work space A 205 is associated withmultiple users or collaborators 206. In some instances, work spacesdeployed in an enterprise may be department specific. For example, workspace B may be associated with department 210 and some users shown asexample user A 208 and workspace N 245 can be associated withdepartments 212 and 216 and users shown as example user B 214.

Each user associated with a work space can generally access the workitems associated with the work space. The level of access will depend onpermissions associated with the specific work space, and/or with aspecific work item. Permissions can be set for the work space or setindividually on a per work item basis. For example, the creator of awork space (e.g., one of user A 208 who creates work space B) can setone permission setting applicable to all work items 235 for otherassociated users and/or users associated with the affiliate department210, for example. Creator user A 208 may also set different permissionsettings for each work item, which may be the same for different users,or varying for different users.

In each work space A, B . . . N, when an action is performed on a workitem by a given user or any other activity is detected in the workspace, other users in the same work space may be notified in real timeor in near real time. Activities which trigger real time notificationscan include, by way of example but not limitation, adding, deleting, ormodifying collaborators in the work space, adding, deleting a work itemin the work space, creating a discussion topic in the work space.

The activity can be performed in relation to a discussion topic in thework space, for example, adding a response to a discussion topic,deleting a response, or editing a response in the work space. Inaddition, the activity is performed on a work item in the work space bythe user, including, by way of example but not limitation, download orupload of a work item, deletion of editing of the work item, selecting,adding, deleting, and modifying a tag in the work item, preview of thework item or comment of the work item, setting or changing permissionsof the work item, sharing a work item, emailing a link to the work item,and/or embedding a link to the work item on another website.

FIG. 3A depicts a block diagram illustrating an example of components inthe host server 100 of a web-based collaboration environment thatsupports content previewing of files. The online content managementsystem allows a user to preview the contents of an entire file stored inthe system without downloading the file to the user's computer from thecontent management system. A user can request a preview of the contentsof a file before deciding to download the file from the online contentmanagement system to the user's computer or even instead of downloadingit if the user does not have the appropriate software installed on theuser's computer for opening the file.

The host server 100 of the web-based or online collaboration environmentcan generally be a cloud-based service. The host server 100 can include,for example, a network interface 302, a collaboration manager 315, aload balancing engine 310, a network engine 320, an analytics database336, a progress indicator engine 330, a data collection module 340, anotification module 390, an annotation module 481, and/or a visualrepresentation module 491. Additional or fewercomponents/modules/engines can be included in the host server 100 andeach illustrated component.

The network interface 302 can be a networking module that enables thehost server 100 to mediate data in a network with an entity that isexternal to the host server 100, through any known and/or convenientcommunications protocol supported by the host and the external entity.The network interface 302 can include one or more of a network adaptorcard, a wireless network interface card (e.g., SMS interface, WiFiinterface, interfaces for various generations of mobile communicationstandards including but not limited to 1G, 2G, 3G, 3.5G, 4G, LTE,etc.,), Bluetooth, a router, an access point, a wireless router, aswitch, a multilayer switch, a protocol converter, a gateway, a bridge,bridge router, a hub, a digital media receiver, and/or a repeater.

As used herein, a “module,” “a manager,” a “handler,” a “detector,” an“interface,” or an “engine” includes a general purpose, dedicated orshared processor and, typically, firmware or software modules that areexecuted by the processor. Depending upon implementation-specific orother considerations, the module, manager, handler, or engine can becentralized or its functionality distributed. The module, manager,handler, or engine can include general or special purpose hardware,firmware, or software embodied in a computer-readable (storage) mediumfor execution by the processor. As used herein, a computer-readablemedium or computer-readable storage medium is intended to include allmediums that are statutory (e.g., in the United States, under 35 U.S.C.101), and to specifically exclude all mediums that are non-statutory innature to the extent that the exclusion is necessary for a claim thatincludes the computer-readable (storage) medium to be valid. Knownstatutory computer-readable mediums include hardware (e.g., registers,random access memory (RAM), non-volatile (NV) storage, to name a few),but may or may not be limited to hardware.

In one embodiment, the host server 100 includes a collaborator manager315 that tracks the permission levels of users requesting a preview of afile. A user should be an authorized collaborator of the workspace inwhich the file is stored to be granted permission to view a preview ofthe file. Additionally, the user who uploads the file to the workspaceis also permitted to view a preview of the file. In some instances theperson who uploads may not be an authorized collaborator of theworkspace, for example, an administrator, but that person may need tocheck whether the file was correctly uploaded.

One embodiment of the host server 100 includes the data collectionmodule 340 which performs real time collection of statistics on everyjob that runs through the conversion servers 400 during the conversionprocess for file previewing. Some file formats do not need to beconverted to any intermediate formats before being converted to thetarget format. These file formats can be converted in a single step.Other file formats use one or more intermediate steps to convert tointermediate formats before finally being converted to the targetformat. The data collection module 340 records the timing informationfor every step of the file conversion process and stores the informationin the analytics database 336. By collecting timing data for every joband analyzing the data to optimize the number of jobs processed perserver in a given amount of time, the overall throughput of jobs can bemaximized by the system.

One embodiment of the host server 100 includes the load balancing engine310 which can evaluate the load on each of the distributed conversionservers 400 and use a distributed queuing system to determine which ofthe distributed conversion servers 400 to send the next job. In oneembodiment, jobs are sent to a particular conversion server based upon around-robin process where each job is sent to a different server untilevery server has received a job, and further jobs are sent to theservers in the same order. In one embodiment, video conversion jobs canbe queued in a cluster separately from other conversion jobs becausevideo conversion can take longer than conversion of other types offiles. Then for each cluster of jobs, the round-robin process would beused among the servers. Additionally, other classes of files could alsobe queued in their own special clusters, as the need arises.

One embodiment of the host server 100 includes the network engine 320which can identify and evaluate the available tools for converting filesfrom an existing format to a target format and determine the optimumtool or tools to use for the conversion process of a given file. In oneembodiment, the network engine 320 can include a network graph generator322 and a network graph solver 324.

The network graph generator 322 evaluates information on the toolsavailable in the system for converting files. Each tool supportsconversion of one or more input formats to one or more output formats. Anode is established by the network graph generator 322 for each uniquepair of input-output formats for each tool available to the system.Thus, if tool X can convert two input formats, A and B, to three outputformats, 1, 2, and 3, then six separate nodes are established that usetool X. In particular, the six nodes correspond to conversion from A to1, A to 2, A to 3, B to 1, B to 2, and B to 3.

The network graph generator 322 also maintains a priority-cost for eachnode. The priority-cost is a measure for assessing the advantages anddisadvantages of using a tool. The priority-cost can be based on factorsincluding, but not limited to, how long a particular conversion tooltakes to perform a conversion, the fidelity of the output file of theconversion tool, and system preferences for conversion of a file into aparticular file format. Conversion tools that convert the same inputfile format to the same output file format but use a differentalgorithm, e.g. ffmpeg versus mencoder, can be maintained as differentnodes with a different priority-cost for each pair of input to outputfile formats. In one embodiment, specific versions of conversion toolscan also be maintained as separate nodes because a particular versionperforms better for a desired input-output file format conversion. Forexample, with the SWFTools library, an older version provides higherquality results for particular conversion situations. As a result,upgrading to the latest version degrades the quality of the output file.Thus, a node can be associated with each installed version of theconversion tool with specified input file format, output file format,conversion algorithm, and priority-costs.

The network graph generator 322 generates a network graph made up of allthe identified nodes. The network graph generator 322 then connectsappropriate nodes so that a first node is connected to a second nodeonly if the output format of the first node is accepted as an inputformat to the second node, thus generating a network graph of conversiontools.

Based upon the priority-costs associated with each node, the networkgraph solver 324 solves the network graph to find the optimum conversiontools needed to convert a given input file format to a target outputfile format. The network graph solution determined by the network graphsolver 324 may result in the conversion of the input file format to oneor more intermediate file formats. If during the conversion of a file aparticular conversion tool fails to create a sufficient output file, thenetwork graph generator 322 can remove the effected node or nodes, andthe network graph solver 324 can re-solve the network graph to re-routethe conversion of the file around the fault.

Although the network engine 320 was described above with respect togenerating and solving a network graph, any other method for determiningthe optimum set of tools for converting one file format to another fileformat can be used based upon the priority-costs of the variousconversion tools.

One embodiment of the host server 100 includes the progress indicatorengine 330 which can generate a progress bar or other type of progressindicator for display to the user to let the user know the approximateamount of time remaining for a file conversion to complete and when adisplay of the desired file preview will be available. The progressindicator engine 330 can include a duration analysis module 332 and/oran indicator generator 334 and can access the analytics database 336.

The duration analysis module 332 accesses data collected and stored inthe analytics database 336 about previous files that have been convertedby the system. The analytics database 336 includes, but is not limitedto, data such as the size of a file and the format of the file. For textfiles, the data includes the number of pages of the file. For image andvideo files, the data includes the width and height of the source imageformat and the target image format, for example in number of pixels. Forvideo files, the data also includes the play length of the video. Thedatabase can also include information about the number of steps used toconvert the input file format to the target file format, for example,the number of intermediate file formats that the input file format needsto be converted to before reaching the final target format. In oneembodiment, the analytics database 336 can be made up of severalseparate databases. In one embodiment, the analytics database 336 can beexternal to the conversion server 400 and/or shared by the conversionservers 400.

The duration analysis module 332 can find previous files that havesimilar attributes as the file to be converted and calculate a predictedconversion time based on the conversion times of similar files that havebeen converted in the past. In one embodiment, the duration analysismodule 332 takes an average of the conversion times of the similar filesas a predicted conversion duration for the file to be converted. In oneembodiment, the duration analysis module 332 can perform a more complexcalculation on the collected analytics data, for example, a weightedaverage depending upon how similar a previous input file is to thepresent file to be converted, to predict the conversion time for thepresent file. In one embodiment, the predicted conversion duration canbe further refined by the duration analysis module 332 based on anysteps of the conversion process that operate linearly and can report itsprogress.

Further, the analytics database 336 can include data on the load on theconversion servers at the time the previous files were converted. In oneembodiment, the conversion server can comprise a number of distributedservers. By determining the load on the conversion servers when a fileis to be converted to a target format, the average of the conversiontimes of similar files can be adjusted to the current load of theservers.

The indicator generator module 334 generates the progress indicator fordisplaying an indication of the time that has elapsed since the start ofthe conversion of the file and the expected time remaining until thefile has finished converting to the target format. The indicatorgenerator module 334 includes a timer 335 for tracking the elapsed timefrom when the conversion process starts to when the conversion processhas finished.

In some embodiments, a video file can start to be streamed to the userprior to completion of the conversion process. In this case, the timer335 tracks the elapsed time from when the conversion process starts tothe anticipated time when the video player can start reading data andshowing video to the user before the remainder of the file has beenconverted to the target format.

FIG. 3B depicts a block diagram illustrating an example of components inthe notification module 390 that is part of the host server 100 of aweb-based collaboration environment with real time activity notificationcapabilities.

The notification module 390 can include, for example, an activitydetector 405, a notification engine 415, a permissions manager 435and/or a notification prioritizer 455. The notification engine 415 caninclude a notification server manager 416 and/or a recipient selectionmodule, the permission manager 435 can include a workspace manager 426,a collaboration manager 438, an organization tracker 440 having anenterprise tracker 441, and/or a work item manager 442; the notificationprioritizer 455 can further include a rules module 456, a chronologicalordering engine 458, and/or a relevance assessor 460. Additional or lesscomponents/modules/engines can be included in the notification module390 and each illustrated component.

One embodiment of the notification module 390 includes the activitydetector 405 which can detect an activity in the web-based collaborationenvironment. The activity can be a triggering activity which causesselect or relevant users to be notified of the occurrence, which in oneembodiment, is in real time or near real-time.

The detected activity can be performed by a user or collaborator in awork space and can be performed on a work item or relating to a workitem, for example, download or upload of the work item, previewing thework item, commenting of a work item, deletion or editing of the workitem, commenting on a work item, identifying, selecting, adding,deleting, saving, editing, and modifying a tag in the work item, settingor changing permissions of the work item, sharing the work itemincluding, for example, emailing a link to the work item, embedding alink to the work item on another website.

The types of activities that can be detected can also relate to changesto a work space, such as adding, deleting, or modifying collaborators inthe work space; changes to work items such as adding, deleting a workitem in the work space; creating a discussion topic in the work space,adding a response to a discussion topic, deleting a response, or editinga response in the work space.

Detected activity in a work space that is performed by a user orotherwise occurring can trigger notifications to be sent out, forexample, via the notification engine 415. The notification engine 415can notify users, which can be collaborators of the user who performedthe activity in the work space via one or more of many mechanisms,including but not limited to, email, SMS, voice-message, text-basedmessage, RSS, feed, etc.

In one embodiment, the notification is depicted through a web-browserused by the other user to access the web-based collaborationenvironment, for access in real time or near real time to when theactivity was performed by the user. When notifying a user in real timethrough a web-browser, the notification engine 415 can utilize apush-enabled service to ensure real time notification. In oneembodiment, the notification is sent by a component or another serverwhich implements push technology (e.g., the notification server 500shown in the example of FIG. 3C). The push-enabled service can beimplemented via long poll or HTTP streaming, for example, by thenotification sever 500 or another component, device which may beinternal to or external to the host server 100.

The notification module 390 can send a notification server anidentification of the recipient to be notified and indicator of theactivity to notify the recipient of. Use of an external push server,such as the notification server 550 is described with further referenceto the example of FIG. 3C. The notification server 550 can be managed bythe notification server manager 416 in the notification engine 415 whichcan communicate events to notify users in real-time via their browserinterfaces. In one embodiment, the host server sends a notificationserver an identification of the recipient to be notified and indicatorof the activity to notify the recipient of.

In general, recipients of an activity notification are selected based oncriteria, for example, by the recipient selection module 418 of thenotification engine 415. The criteria may be determined, for example,based on a work space in which the activity was performed in the onlinecollaboration platform. Specifically, the criteria, is in oneembodiment, determined based on permissions configured for theworkspace, as managed, tracked, updated, implemented, revised, based bythe permissions manager 435.

For example, the workspace can be associated with an enterprise and insuch an instance, the criteria can specify that the recipient that isselected is an employee of the enterprise. Enterprise associations andaffiliations can be managed by the organization tracker 440, forexample; in some embodiments, enterprises and/or enterprise accounts canspecifically be managed, tracked, monitored by the enterprise tracker441. Permissions for the workspace can configured by a creator oradministrative user of the workspace. The collaboration manager 438 candetermine, track, and implement relationships, roles, and/or accesslevels of multiple users/collaborators. For example, users may be ageneral user, a creator of the work space, a creator of a work item, oran administrative user. The permissions for a work space can beconfigured by a user, creator, or the administrative user and isgenerally managed by the collaborations manager 438.

The criteria that are determined by work space permissions can bemanaged by the work space manager 436 in the permissions manager 435.The recipient selection module 418 can also determine the recipientselection criteria based on user affiliation with the workspace,including, one or more of, member, invited collaborator and collaboratorin the workspace. Such user affiliation can be tracked and managed by,for example, the collaboration manger 438 of the permissions manager435.

In one embodiment, the criteria are determined based on permissionsassociated with a work item on which the activity was performed inrelation to in the workspace. Permissions associated with work items canbe managed, tracked, updated, revised, or implemented, in oneembodiment, by the work item manager 442. For example, the permissionsassociated with the work item can be set by, a creator of the work itemor an administrative user of the work space. Each work space can includemultiple work items where each of multiple work items has individuallyconfigurable permissions. The individually configured permissions can bedetermined by user roles and rights (e.g., as managed by thecollaborations manager 438). The work item manager 442 can communicatewith the collaboration manager 438 in setting, configuring, orre-configuring permissions associated with work items.

The notification of a triggering activity, can be presented to aselected user in the web-based or online collaboration environment suchthat the notification is accessible by the user in real time or nearreal time to when the triggering activity occurred. In one embodiment,the notification is presented via a user interface to the onlinecollaboration platform, for example, when the recipient (e.g., selectedrecipient) is accessing the workspace (e.g., the same work space inwhich activity is detected) or when the recipient is accessing adifferent work space. Specifically, the real time or near real timenotification can be presented to the user via the user interface if theuser is online (e.g., online or otherwise logged into the web-based oronline collaboration environment). Examples of real time notificationsare illustrated with further reference to the examples of FIG. 10 andFIG. 11. The feed stream is shown in the lower right corner of the filespage in FIG. 10 and the preview page in FIG. 11.

The notification engine 415 can determine the channel through which tonotify selected users or recipients of activity. The channels that areused can include, indicators via a user interface to the onlinecollaboration environment, SMS, audio message, text-based messages,email, desktop application, RSS, etc. The indicators presented via theuser interface can include visual indicators (e.g., pop-up formincluding text and/or graphics), audio indicators, or any other typesdetectable by a user.

In one embodiment, the notification is presented in the user interfaceamong other notifications in an order based a rule, which may beconfigurable by the recipient or another user. Such prioritization inpresentation can be determined, managed, tracked, implemented, revised,or updated by the notification prioritizer 455, for example. Thenotification prioritizer 455 can present the notification in the userinterface (e.g., as shown in the user interface of FIG. 10) among othernotifications in an order based on a rule as determined by the rulesmodule 456, for example.

The rule can indicate user preferences for notifications of activitiesbased on one or more of, a type of activity that occurred and a userrelated to the activity. For example, a given user may explicitly orimplicitly indicate preferences for activities or actions performed byspecific other users or collaborators. A user may also indicateexplicitly or implicitly preferences for types of activities that theywish to be notified of or not notified of. Users may also indicate thatnotifications for certain types of activities are to be prioritizedother others. For example, a user may indicate that a notification for a‘comment on’ activity is of a higher priority compared to a ‘edit’activity.

In one embodiment, the notification is presented in the user interfaceamong other notifications based on chronological order, for example astracked or determined by the chronological ordering engine 458. Forexample, each notification can be depicted in the user interface basedthe time ordering when each associated triggering activity occurred.Notification of the most recently occurred activity can be depictedabove or below other notifications, or in a location where most easilyaccessed by the recipient user.

In one embodiment, the notification is presented in the user interfaceamong other notifications based on relevance to the recipient, forexample, as determined, tracked, monitored, or implemented by therelevance assessor 460. The relevance to the recipient can berepresented by, for example, contextual and temporal parameters. Forexample, contextual parameters provide metrics indicating therecipient's current activity in the online collaboration platform.Current activity can be any activity of the user that occurred within acertain time frame (e.g., within the last minute, within the last 5minutes, within the last 10 minutes, for example). Activity of the usercan include, a document that the user edited, viewed, downloaded,commented on, tagged, or otherwise accessed. Activity of the user canalso include activities surrounding a workspace, includingcreation/modification of a workspace or attributes of a workspace, suchas modification of collaborators, permissions, etc.

Temporal parameters can, for example, provide metrics indicating therecipient's activities in the online collaboration platform over aperiod of time, a frequency with which the recipient has accessed a workitem with which the activity relates to, and/or a frequency with whichthe recipient has accessed the work space in which the activity wasperformed.

FIG. 3C depicts a block diagram illustrating an example of components ina notification server 550 for providing real time or near real timenotifications of activities that occur in a web-based or onlinecollaboration environment.

The notification server 550 generally includes, for example, a pushserver 505, an SMS notifier 515, and/or a priority module 525. In oneembodiment, the push server 505 includes a long poll engine 506 and/oran HTTP streaming engine 508. Additional or lesscomponents/modules/engines can be included in the notification server550 and each illustrated component.

The notification server 550 can support the services of a collaborationplatform or environment to provide real time or near real timenotifications of activities. In one embodiment, the notification server550 is integrated within a host server of a collaboration platform(e.g., the host server 100 shown in the example of FIG. 1). Thenotification server 550 may also be externally coupled to the hostserver (e.g., the host server 100). In some instances, a portion of thefunctions implemented and performed by the notification server 550 canbe implemented in part or in whole in the host server 100. For example,some of the components shown to be in the notification server 500 andassociated functionalities can in part or in whole reside in the hostserver 100.

In one embodiment, the notification server 550 sends a notification ofan activity that occurs within a collaboration platform to a recipient.The notification is sent by the server 550 such that the recipient isnotified in real time or near real time to when the activity occurred orwhen the activity was performed. Real time notification can be performedvia push technology, for example by the push server 505 through longpolls (e.g., via the long poll engine 506) and/or through the HTTPstreaming (e.g., via the HTTP streaming engine 506). The notificationserver 550 can communicate with the host server to determine a recipientto whom to notify. The notification server 550 can also determine theactivity to notify the recipient of, for example through communicationwith the host server.

In one embodiment, the notification is presented in a feed stream amongother notifications through a user interface on the user deviceaccording to relevancy to the user determined based on current or recentactivity of the user in the web-based collaboration environment. Thepresentation priority in a user interface in a feed stream can bemanaged, in whole, or in part, for example, by the priority module 525using information determined by the notification prioritizer (e.g.,notification prioritizer 455 of notification module 390 shown in theexample of FIG. 3B).

In one embodiment, the notification server 550 can send notifications tousers via SMS (e.g., through the SMS notifier 515). In this instance,the notification server 500 can be coupled to an SMS center whichforwards the SMS text message to a mobile device over a cellularnetwork. The notification can be sent via SMS in real time or near realtime, or with a delay.

FIG. 4A depicts a block diagram illustrating an example of components ina conversion server 400 for converting a file stored in the web-basedcontent management system with collaboration environment to a targetfile format suitable for providing a preview of the file. The conversionserver 400 of the web-based or online collaboration environment caninclude, for example, a viewer module 475, a conversion engine 410, astreaming engine 430, a downsampling engine 444, a fast start previewmodule 450, a rotation module 466, and/or a libraries database 472. Theconversion engine 410 can include a PDF rendering engine 470.

One embodiment of the conversion server 400 includes the viewer module475 for displaying previews of requested files in a web page. The viewermodule 475 takes as input files having one or more supported fileformats and displays the file. In one embodiment, the viewer module 475uses a Flash-based browser document viewer. The document viewer isembedded in a webpage and displays Adobe Flash small web format (SWF)files. Because files stored in the web-based content management systemcan have any format, the conversion server 400 includes conversion toolsthat can convert the format of an input file and convert the file to atarget output format that is supported by the viewer module 475.

One embodiment of the conversion server 400 includes the conversionengine 410 which can run the conversion tools used to convert an inputfile format to another file format. Non-limiting examples of conversiontools include mencoder and ffmpeg. In one embodiment, the conversiontool manager 410 manages subsystems that are designed to handle specificstyle formats. For example, because Microsoft Office is ideally suitedto convert MSWord and PowerPoint documents, a Windows-based subsystemcan be used to handle MS Office file formats.

In one embodiment, the conversion engine 410 can perform a hard-codedconversion process where specific tools are used to convert certaininput formats to a specified output format. In another embodiment, theconversion engine 410 uses a path-finding algorithm implemented by thenetwork engine 320 described above.

In some instances, a user who uploads a file to the content managementsystem can use the content preview feature to check whether the file wassuccessfully uploaded. It is important to ensure the preview provided tothe user appears as close as possible to the actual appearance of thedocument when opened using the file's native program to reassure theuser that the file was not corrupted during the upload process orincompletely uploaded. One embodiment of the conversion engine 410includes the PDF (Portable Document Format) rendering engine 470 whichcan provide a preview of PDF files with high fidelity. The PDF renderingengine 470 can access PDF rendering libraries database 472.

PDF is a file format standard that is used for document exchange. A PDFfile captures a complete description of a document, including the text,fonts, graphics, and other information needed to display the document ina manner that is independent of the application software, hardware, oroperating system. There are many different versions of the PDFspecification, and the different versions support different displayfunctionalities.

There are also several open source libraries that are available forparsing PDF files and converting PDF files to other formats. Forexample, the pdf2swf program is one of the tools provided by theSWFTools library that can be used to convert PDF files to an Adobe FlashSWF file. The pdf2swf program uses the open source xpdf library to parsethe PDF file and then provide instructions for generating the SWF file.There is another open source PDF rendering library called Poppler.Because Poppler is more actively supported and also contains a number ofimprovements over the xpdf library, it is advantageous to use Popplerinstead of the xpdf library for parsing PDF files. Thus, in oneembodiment, the pdf2swf program in the SWFTools library is modified touse the Poppler library, instead of the xpdf library, to parse the PDFfile to provide instructions for generating the corresponding SWF file.

By using the Poppler library rather than the xpdf library, more accuratepreviews of PDF files can be provided by the viewer module 475,especially for some of the less commonly used PDF features. Someadvantages include PBM picture support, corrected transparency values,improved template support, drawing improvements, and other bug fixesthat were present with use of the xpdf library.

In one embodiment, the PDF rendering libraries 472 includes the modifiedSWFTools library and the modified Poppler library and is part of the PDFrendering engine 470. In one embodiment, the PDF rendering libraries 472is made up of several separate libraries. In one embodiment, the PDFrendering libraries 472 can be external to the conversion server 400and/or shared by the conversion servers 400.

One embodiment of the conversion server 400 includes the streamingengine 430 which can take the video file as it is being converted by theconversion engine 410 and write it directly to a publicly-availablelocation in chunks. The video player can then start reading the datashowing the video to the user before the rest of the file has beenconverted.

One embodiment of the conversion server 400 includes the downsamplingengine 444 which can downsample a video file by removing pixels fromvideo frames to reduce the size of the file for converting to a targetformat for preview. Advantages of downsampling include reducing the timea preview takes to start playing for a user, preventing the preview fromstarting, stopping, or freezing during playback, and reducing theoverall bandwidth usage for the server and the end user.

In one embodiment, a file can be downsampled if it is larger than 360pixels in the height dimension of the frames. During the downsamplingprocess, the aspect ratio of the frames is maintained. Thus, for sourceshaving a 4:3 aspect ratio, the resulting frame sizes of the video filewould be 480×360 pixels, and for wide-format video, the resulting sizewould be 640×360 pixels. Other downsampling criteria, such as differentpixel dimensions of the frames, can also be selected when reducing thesize of a file.

In one embodiment, a video file can be downsampled to multiple differentconversion sizes, for example, a high resolution version, a mediumresolution version, and a low resolution version. In one embodiment,depending upon the tier of service a user pays for, one, two, or allthree of the different versions can be made available to the user. For auser paying a premium to subscribe to a higher tier of service, the userwould receive more versions than a user subscribing to a lower tier ofservice. The benefit of receiving more versions having different sizesis that the user then has the option of selecting the most appropriatesize or resolution. For example, a low resolution version can beselected for a slow network connection, and a high resolution versioncan be selected for sharing a video with friends who have a highbandwidth network connection. In one embodiment, if more than one sizefile is to be produced, the downsampling for each conversion size isperformed on the original input file, rather than downsampling a streamof video data multiple times, to minimize the number of conversionerrors introduced.

In one embodiment, if a video file is converted from its input formatdirectly to a desired target format, the downsampling can take placeprior to the conversion of the file format to reduce the processing timeneeded to convert the file format. However, if the video file is firstconverted as part of a multi-step conversion to an intermediate formatbefore being converted to a target format, the unsupported input fileformat should be converted to the intermediate format first beforedownsampling for the final conversion to the target format.

With traditional video file downloading, a user is not able to accessthe video file before it has completely downloaded because a videoplayer needs the metadata encoded in the video file, and the metadata isusually found at the end of the file. Thus, the video player needs towait until the video file is fully loaded prior to playing the video.One embodiment of the conversion server 400 includes the fast startpreview module 450 which can move the metadata from the end of the fileto the beginning of the file. By moving the metadata to the beginning ofthe file, the preview player can begin playing the video before the userhas fully downloaded the file. In one embodiment, the fast start previewmodule 450 uses the qt-faststart library to move the metadata to thebeginning of the video file.

One embodiment of the conversion server 400 includes the rotation module466 which uses a rotation identification tool to identify the embeddedorientation data that a digital camera uses to display a video. Once therotation module 466 has identified the orientation, it sends thisinformation to the conversion tool(s) as a flag to correct the video forplayback in the video preview in the online collaboration environment.It is important to identify the orientation data of a video file becausevideo taken upside-down with a digital camera that plays in anappropriate orientation in the digital camera and most desktop videoplayers would appear upside-down in the video preview.

FIG. 4B depicts a block diagram illustrating an example of components inan annotation module 481 for supporting annotations of previews. Theannotation module 481 can include, for example, an annotation engine482, a stroke grouping module 483, a rendering module 484, an annotationstreaming module 485, an annotation notification module 486, and/or anannotation version tracking module 487. The stroke grouping module 483can include a timer 489.

One embodiment of the annotation module 481 includes the annotationengine 482 which receives annotation commands from a user and convertseach annotation command to an annotation in a suitable language fordescribing graphics, such as simple vector graphics (SVG) for describinggraphics in XML. Annotation commands can be sent by using one or moreinput devices, such as a mouse and/or a keyboard.

One embodiment of the annotation module 481 includes the stroke groupingmodule 483 which can group and store individual annotation strokesspecified by a user as distinct SVG strokes. These stroke groupings canbe erased as a group without affecting other annotation strokes. A timer489 can be used with a timing algorithm to combine multiple strokes intoa single stroke group to allow a user to make complex annotations, suchas drawing shapes, and yet be able to easily delete them. In oneembodiment, the timing algorithm starts a new stroke grouping if a firstpredetermined amount of time passes between the completion of a stroke(e.g., upward mouse movement) and the start of the next stroke (e.g.,downward mouse movement) if the mouse does not move in between thestrokes. If the mouse does move, only a second predetermined amount oftime is allowed to elapse before a new stroke grouping is started. Inone example, the first predetermined amount of time can be 800 ms, andthe second predetermined amount of time can be 200 ms, but the selectedtime periods can be different from these examples.

In one embodiment, standard annotation drawing is made with a free-formpen drawing tool. When the shift key is held down, the free-form pendrawing tool changes to a line drawing tool. Additionally, lines withinten degrees of horizontal are automatically snapped to horizontal tofacilitate underlining sentences. When the option key is held down, thefree-from pen drawing tool changes to an ellipse drawing tool. When boththe shift and option keys are held down, the free-form pen drawing toolchanges to a circle drawing tool.

One embodiment of the annotation module 481 includes the renderingmodule 484 which can render annotations using different technologies ondifferent platforms. In one embodiment, the rendering module 484superimposes a transparent layer on top of the SWF files displayed inthe browser by the viewer module 475. The transparent layer can besuperimposed using a tool for presenting graphics on webpages, such asFlash or HTML5. All annotation commands from the user that are convertedto SVG or other suitable graphics language are rendered on this layerusing the appropriate graphics tool.

In one embodiment, the annotation commands converted to SVG can bedelivered to user devices running the iOS operating system developed byApple Inc. of Cupertino, Calif., where the annotations are renderedusing native views, rather than Flash or HTML5.

One embodiment of the annotation module 481 includes the annotationstreaming module 485 which streams in real time annotation data betweenthe browsers of collaborators who are reviewing and collaborating on adocument. By streaming the annotation data, the participants do not needto constantly download updated versions of the original document.

One embodiment of the annotation module 481 includes the annotationnotification module 486 which notifies collaborators of the workspace inwhich the file being annotated is stored when annotations are made tothe file. Examples of methods of notification include, but are notlimited to, emailing collaborators of the annotated file whenannotations are made, updating the event stream in a discussionworkspace of the file when an annotation command is received, andincluding details of the annotations in the metadata associated with thefile. Event streams are described in more detail in U.S. applicationSer. No. 13/208,615, entitled “COLLABORATION SESSIONS IN A WORKSPACE ONA CLOUD-BASED CONTENT MANAGEMENT SYSTEM, filed Aug. 12, 2011 and isincorporated herein in its entirety. Metadata is described in moredetail in U.S. application Ser. No. 13/274,268, entitled “AUTOMATIC ANDSEMI-AUTOMATIC TAGGING FEATURES OF WORK ITEMS IN A SHARED WORKSPACE FORMETADATA TRACKING IN A CLOUD-BASED CONTENT MANAGEMENT SYSTEM WITHSELECTIVE OR OPTIONAL USER CONTRIBUTION”, filed Oct. 14, 2011 and isincorporated herein in its entirety.

One embodiment of the annotation module 481 includes the annotationversion tracking module 487 which stores the annotation files and tracksthe version history of the files. Annotation data files are storedseparately from the document being annotated to allow the document to bedisplayed either with or without the annotations. The annotation filesinclude the annotation data converted to a suitable graphics language,such as SVG. Additionally, storing the annotations separately permitsthe annotations to be rendered by the rendering module 484 usingdifferent technologies on different platforms. In one embodiment, thefile being annotated can be stored as a PDF file that includes theannotation data. Then any of the collaborators of the file can printthis PDF file to obtain an annotated version of the file. One or moreversions of an annotation file can be stored for each version of thefile being annotated. The annotation version tracking module 487 enablesusers to access, view, print, and set to current any annotation fileversion.

When there are multiple collaborators simultaneously previewing the samefile, any of the collaborators can annotate the file, and theannotations from all collaborators will be visible to all othercollaborators. With multiple collaborators, a unique transparent layeris superimposed on top of the SWF file displayed to each of thecollaborating users' browsers, and each of the unique transparent layersis associated with one of the collaborating users. Then annotationcommands provided by each collaborator are converted to annotation dataand rendered on the transparent layer associated with that particularuser. Annotation data files can be stored separately for eachcollaborator, and a composite annotation data file of annotations madeby all collaborators can also be stored. As with files annotated by asingle user, a PDF file can be stored that includes all of thecollaborators' annotation data.

FIG. 4C depicts a block diagram illustrating an example of components ina visual representation module 491 for tracking user access of files andproviding visual representations of user access of the files. The visualrepresentation module 491 can include, for example, a tracking module492 and/or a visual representation display module 493.

One embodiment of the visual representation module 491 includes thetracking module 492 which tracks a user's interaction with a preview ofa requested file. For non-video files, the tracking module 492 collectsdata pertaining to the frequency with which users access sections of thefile so that content popularity of the different sections can betracked. The tracking module 492 can track sections that are inherent inthe viewed file. Alternatively or additionally, the tracking module 492can treat each page as a section for tracking purposes. In oneembodiment, the tracking module 492 can track user specified sections inthe file.

For video files, because the entire content area of the video is visibleat all times, the tracking module 492 tracks portions of the video thathave been viewed most frequently. Tracking frequency of viewing of aportion of the video can reveal the point at which viewers become boredand close the video. Similar to non-video files, the tracking module 492can track portions inherent in the video file, such as chapters, or useuser-specified sections.

In one embodiment, the tracking module 492 does not initiate trackinguntil the user first engages with the preview player in the browser, forexample, by clicking on the preview or scrolling the preview. Othermethods of engagement can also be used to determine when to begintracking the user's engagement with the preview, for example when a userholds the computer mouse over the preview player for a prolonged periodof time.

The data collected by the tracking module 492 can be stored in thevisual representation database 378. In one embodiment, the visualrepresentation database 378 can be made up of several separatedatabases.

One embodiment of the visual representation module 491 includes thevisual representation display module 493 which can access the datastored in the visual representation database 378 by the tracking module492 and present the user with a visual representation of user access ofa file based on the tracking data for the file. The visualrepresentation display module 493 can display different representationsfor the requested visual representations that indicate the frequencywith which users who previewed the file accessed certain portions of thedocument. In one embodiment, the visual representation display module493 can display a map of a document with color-coded sections wheredifferent colors correspond to different frequencies of access, such asmight be used in a heat map.

FIG. 5 depicts a flow chart illustrating an example process fordetermining if a user has permission to access preview of a file.

At block 505, the system receives user input from a user requesting apreview of a file. In one embodiment, the user can request the previewby clicking on the file in the workspace of the online collaborationenvironment.

Then at block 510, the system determines the permission level of therequesting user. In one embodiment, a first type of permission level,e.g. an editor, allows a user to have full read and write access to aworkspace, including downloading or viewing a preview of the contents ofthe workspace as well as uploading new content to the workspace. Asecond type of permission level, e.g. a viewer, allows a user to havefull read access to a workspace such that the user can download or viewa preview of contents of the workspace but not upload or edit contentsof the workspace. A third type of permission level, e.g. an uploader,can allow a user to have limited write access to contents of a workspacesuch that the user can see items in the workspace but not download orview the items, while being permitted to upload new content to theworkspace.

At decision block 516, the system determines if the user has permissionto preview the file. If the permission level of the user does not allowpreviewing (block 516—No), at block 526 the system notifies the userthat permission to view the preview is denied. If the permission levelof the user allows previewing (block 516—Yes), at block 530 the systemconverts the file to an appropriate format suitable for providing apreview of the file. Then at block 535 the system presents the previewto the user. In one embodiment, the file is a video file. In this case,the file does not have to finish converting before the file is presentedto the user as a preview, as discussed above with respect to streaming avideo file.

FIG. 6 depicts a flow chart illustrating an example process for findingan optimum path using different conversion tools for converting an inputfile format to a target file format.

At block 605, the system identifies the format of an input file that hasbeen uploaded by a user. Then at block 610, the system specifies thedesired output format appropriate for presenting a preview of the file.In one embodiment, output size and/or preview type is also specified.Output size can be used to limit the size of the output file. Thus, ifthe converted file exceeds the specified threshold, the file can bere-processed, reduced in size, or not used. In one embodiment, outputdimensions are specified because in different applications, differentdimensions of previews may be used. For example, a preview can bedisplayed as a thumbnail on a file listing page (e.g. FIG. 10) or as alarge display on a file preview page (e.g. in FIG. 11). With both ofthese previews, the files are the same format, but have differentdimensions, thus the previews with different dimensions are differentsystem outputs.

Next, at block 615, the system solves the network graph for the optimumconversion scenario using the available conversion tools. The systemtakes into account the priority-cost of using each of the tools todetermine the optimum path. Then at block 620, the system converts thefile using the identified conversion scenario path.

At decision block 625, the system determines whether the conversion ofthe input file to the targeted output format was successful. If theconversion was successful (block 625—Yes), the process ends at block699. If the conversion failed (block 625—No), at block 630, the systemidentifies the conversion tool that failed to create a sufficient outputfile. If the faulty conversion tool was used to convert to anintermediate file format, subsequent conversions from the output of thefaulty tool would not be successful.

At block 635, the system re-solves the network graph without using thenodes associated with the faulty conversion tool to identify the nextoptimum path using the available conversion tools. The process returnsto block 620 to convert the input file using the newly identified path.

FIG. 7 depicts a flow chart illustrating an example process forconverting a format of a video file to a target format for presenting asa preview.

At block 705, the system begins to receive an uploading video filestreamed from a user. Then at decision block 710, the system determinesif sufficient data has been received to start converting the file to adesired target format. If sufficient data has not yet been received(block 710—No), at block 715 the system waits and continues to receivethe uploading file and returns to decision block 710.

If sufficient data has been received (block 710—Yes), at block 720, thesystem runs a rotation identification tool on the input file todetermine the orientation of the video data. Then at decision block 725,the system determines if the file format is compatible with theconversion tool or tools that the system has available, for examplemencoder. If the file format is not compatible (block 725—No), at block730 the system converts the input file to an intermediate format that iscompatible with the conversion tool and continues to block 735. If thefile format is compatible with the conversion tool (block 725—Yes), atblock 735 the system specifies the desired output format to theconversion tool.

The system applies the qt-faststart program at block 740 to the file inorder to move the metadata to the beginning of the video file. Thisallows the output file to be streamed to the user while the conversionof the remainder of the file occurs if the user wishes to do so.

Then at block 745, the system uses the video conversion tool to startconverting the file, whether it is the input file or an intermediateformat file, to the desired format. The conversion process on the filedoes not have to finish before streaming the converted portions to theuser for previewing. The converted portions of the file is stored atblock 750. The converted file can be written directly to apublicly-available location in chunks, and the video player can startreading the data and showing the video to the user before the file isfinished converting.

FIG. 8 depicts a flow chart illustrating an example process forgenerating a progress indicator that shows the amount of time remainingfor converting a file.

At block 805, the system receives input from a user requesting a filepreview. Next, at block 810, the system compares the attributes of thefile to analytics stored in a database containing attributes ofpreviously converted files. Attributes can include the size of the fileand the file format.

At block 815, the system examines the format of the file to be previewedand determines the number of intermediate steps needed, if any, toconvert the file to a target suitable for previewing.

At block 820, the system obtains the current load information on theconversion server(s).

Then at block 825, the system uses the obtained data to determine anexpected conversion duration. The system sets a timer and generates aprogress indicator for displaying to the user at block 830. The progressof the conversion servers in performing the file conversion can bedisplayed in any suitable form, such as a bar or a pie.

At block 835, the system checks the timer, and at decision block 840,the system determines if the conversion has finished. If the conversionhas completed (block 840—Yes), the process ends at block 899. If theconversion has not finished (block 840—No), at block 845 the systemupdates the progress indicator and returns to block 835 to check thetimer.

FIG. 12 depicts a flow chart illustrating an example process forgenerating a preview of a PDF file. In one embodiment, the process shownin FIG. 12 is a more detailed view of the process of block 530 in FIG. 5for converting a PDF file format to a format suitable for providing apreview.

At block 1205, the system sends the PDF file to a modified pdf2swfprogram. The modified pdf2swf program uses the Poppler PDF library forparsing the PDF file. The output of the modified pdf2swf program areinstructions for generating a SWF file.

Then at block 1210, the system takes the instructions from the modifiedpdf2swf program and generates the corresponding SWF file for the PDFfile. Using the generated SWF file, the system provides a preview of thePDF file to the user.

FIG. 13 depicts a flow chart illustrating an example process forreceiving annotation commands for annotating a preview.

At block 1350, the system displays a preview of a requested file in therequesting user's browser. At block 1310, the system superimposes atransparent layer on top of the preview.

Then at decision block 1315, the system determines if a user hasrequested an existing annotation file for the requested file. If aprevious annotation file has been requested (block 1315—Yes), at block1320 the system accesses the requested annotation file and displays theannotations from that file on the transparent layer.

If no annotation file has been requested (block 1315—No), at block 1325the system accepts an annotation command from the previewing user. Atblock 1340, the system converts the annotation command into simplevector graphics (SVG) and renders the graphics onto the transparentlayer in the user's browser.

Then at block 1335, the system notifies collaborators about theannotations that the user has requested for the previewed file.Non-limiting examples of methods of notification include updating theevent stream for the workspace in which the requested file resides inthe web-based collaboration environment and emailing the information tocollaborators of the workspace. The system also adds the annotationdetails from the command into the metadata for the file.

At block 1340, the system stores the annotation to an annotation file.The annotation file is a new file if the user did not request anannotation file at decision block 1315. The annotation file is a newversion of the requested annotation file if the user requested anannotation file at block 1315.

Then at decision block 1345, the system determines if the user has sentanother annotation command. If another annotation command has been sent(block 1345—Yes), the process returns to block 1325 to accept theannotation command. If the user has no further annotation commands(block 1345—No), at block 1350 the system stores a PDF version of thepreviewed along with all of the annotations requested by the user. Theprocess ends at block 1399.

FIG. 14A depicts a flow chart illustrating an example process foracquiring data for a previewed file for providing a visualrepresentation of user access to the previewed file.

At block 1405, the system displays a preview of a requested file in therequesting user's browser. Then at decision block 1410, the systemdetermines if the user has engaged the preview. Non-limiting examples ofengagement by a user of a preview include clicking on the preview orscrolling the preview of a document or clicking buttons to scroll avideo forward. By waiting until the user has engaged the preview, it ispossible to discount the fact that every document or video preview ispresented to the user starting at the beginning of the document orvideo. If the user has not engaged the preview (block 1410—No), thesystem remains at decision block 1410 until the user engages thepreview.

If the user has engaged the preview (block 1410—Yes), the system beginsto track the user's use of the preview. For documents, the system cantrack the duration the user remains at each section of the document.Sections of the document can be identified by pages, headings, or anyother user-specified divisions. For videos, the system can track whichsections have been viewed and/or the frequency with which each sectionis viewed.

Then at block 1420, the tracking data for the current user previewingthe file is added to the tracking data previously obtained for the fileand stored.

FIG. 14B depicts a flow chart illustrating an example process forpresenting a visual representation of user access for a file. Atdecision block 1450, the system determines if a user has requested avisual representation for a particular file. If no visual representationhas been requested (block 1450—No), the system remains at decision block1450 until a request is made.

If a visual representation has been requested (block 1450—Yes), at block1455, the system accesses the tracking data for the requested file. Thenat block 1460, the system displays a visual representation for the filebased on the tracking data. Different visual representations can begenerated. In one embodiment, the requesting user can request aparticular graphical representation, such as a heat map.

FIG. 15 depicts an example graphical representation of user access for afile.

In the example visual representation, a document is shown thathighlights different portions of the document according to the frequencywith which the portions have been previewed. In one embodiment, adifferent color can be used to correspond to viewing frequency, forexample, highly viewed sections can be highlighted red, moderatelyviewed sections can be highlighted yellow, and sections that are viewedleast frequently can be highlighted green. Other colors or mappingmethods can be used for displaying the visual representation.

FIG. 9 shows a diagrammatic representation of a machine 900 in theexample form of a computer system within which a set of instructions,for causing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed

In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment.

The machine may be a server computer, a client computer, a personalcomputer (PC), a user device, a tablet PC, a laptop computer, a set-topbox (STB), a personal digital assistant (PDA), a cellular telephone, aniPhone, an iPad, a Blackberry, a processor, a telephone, a webappliance, a network router, switch or bridge, a console, a hand-heldconsole, a (hand-held) gaming device, a music player, any portable,mobile, hand-held device, or any machine capable of executing a set ofinstructions (sequential or otherwise) that specify actions to be takenby that machine.

While the machine-readable medium or machine-readable storage medium isshown in an exemplary embodiment to be a single medium, the term“machine-readable medium” and “machine-readable storage medium” shouldbe taken to include a single medium or multiple media (e.g., acentralized or distributed database, and/or associated caches andservers) that store the one or more sets of instructions. The term“machine-readable medium” and “machine-readable storage medium” shallalso be taken to include any medium that is capable of storing, encodingor carrying a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresently disclosed technique and innovation.

In general, the routines executed to implement the embodiments of thedisclosure, may be implemented as part of an operating system or aspecific application, component, program, object, module or sequence ofinstructions referred to as “computer programs.” The computer programstypically comprise one or more instructions set at various times invarious memory and storage devices in a computer, and that, when readand executed by one or more processing units or processors in acomputer, cause the computer to perform operations to execute elementsinvolving the various aspects of the disclosure.

Moreover, while embodiments have been described in the context of fullyfunctioning computers and computer systems, those skilled in the artwill appreciate that the various embodiments are capable of beingdistributed as a program product in a variety of forms, and that thedisclosure applies equally regardless of the particular type of machineor computer-readable media used to actually effect the distribution.

Further examples of machine-readable storage media, machine-readablemedia, or computer-readable (storage) media include, but are not limitedto, recordable type media such as volatile and non-volatile memorydevices, floppy and other removable disks, hard disk drives, opticaldisks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital VersatileDisks, (DVDs), etc.), among others, and transmission type media such asdigital and analog communication links.

The network interface device enables the machine 900 to mediate data ina network with an entity that is external to the host server, throughany known and/or convenient communications protocol supported by thehost and the external entity. The network interface device can includeone or more of a network adaptor card, a wireless network interfacecard, a router, an access point, a wireless router, a switch, amultilayer switch, a protocol converter, a gateway, a bridge, bridgerouter, a hub, a digital media receiver, and/or a repeater.

The network interface device can include a firewall which can, in someembodiments, govern and/or manage permission to access/proxy data in acomputer network, and track varying levels of trust between differentmachines and/or applications. The firewall can be any number of moduleshaving any combination of hardware and/or software components able toenforce a predetermined set of access rights between a particular set ofmachines and applications, machines and machines, and/or applicationsand applications, for example, to regulate the flow of traffic andresource sharing between these varying entities. The firewall mayadditionally manage and/or have access to an access control list whichdetails permissions including for example, the access and operationrights of an object by an individual, a machine, and/or an application,and the circumstances under which the permission rights stand.

Other network security functions can be performed or included in thefunctions of the firewall, can be, for example, but are not limited to,intrusion-prevention, intrusion detection, next-generation firewall,personal firewall, etc. without deviating from the novel art of thisdisclosure.

Conclusion

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense (i.e., to say, in thesense of “including, but not limited to”), as opposed to an exclusive orexhaustive sense. As used herein, the terms “connected,” “coupled,” orany variant thereof means any connection or coupling, either direct orindirect, between two or more elements. Such a coupling or connectionbetween the elements can be physical, logical, or a combination thereof.Additionally, the words “herein,” “above,” “below,” and words of similarimport, when used in this application, refer to this application as awhole and not to any particular portions of this application. Where thecontext permits, words in the above Detailed Description using thesingular or plural number may also include the plural or singular numberrespectively. The word “or,” in reference to a list of two or moreitems, covers all of the following interpretations of the word: any ofthe items in the list, all of the items in the list, and any combinationof the items in the list.

The above Detailed Description of examples of the invention is notintended to be exhaustive or to limit the invention to the precise formdisclosed above. While specific examples for the invention are describedabove for illustrative purposes, various equivalent modifications arepossible within the scope of the invention, as those skilled in therelevant art will recognize. While processes or blocks are presented ina given order in this application, alternative implementations mayperform routines having steps performed in a different order, or employsystems having blocks in a different order. Some processes or blocks maybe deleted, moved, added, subdivided, combined, and/or modified toprovide alternative or subcombinations. Also, while processes or blocksare at times shown as being performed in series, these processes orblocks may instead be performed or implemented in parallel, or may beperformed at different times. Further any specific numbers noted hereinare only examples. It is understood that alternative implementations mayemploy differing values or ranges.

The various illustrations and teachings provided herein can also beapplied to systems other than the system described above. The elementsand acts of the various examples described above can be combined toprovide further implementations of the invention.

Any patents and applications and other references noted above, includingany that may be listed in accompanying filing papers, are incorporatedherein by reference. Aspects of the invention can be modified, ifnecessary, to employ the systems, functions, and concepts included insuch references to provide further implementations of the invention.

These and other changes can be made to the invention in light of theabove Detailed Description. While the above description describescertain examples of the invention, and describes the best modecontemplated, no matter how detailed the above appears in text, theinvention can be practiced in many ways. Details of the system may varyconsiderably in its specific implementation, while still beingencompassed by the invention disclosed herein. As noted above,particular terminology used when describing certain features or aspectsof the invention should not be taken to imply that the terminology isbeing redefined herein to be restricted to any specific characteristics,features, or aspects of the invention with which that terminology isassociated. In general, the terms used in the following claims shouldnot be construed to limit the invention to the specific examplesdisclosed in the specification, unless the above Detailed Descriptionsection explicitly defines such terms. Accordingly, the actual scope ofthe invention encompasses not only the disclosed examples, but also allequivalent ways of practicing or implementing the invention under theclaims.

While certain aspects of the invention are presented below in certainclaim forms, the applicant contemplates the various aspects of theinvention in any number of claim forms. For example, while only oneaspect of the invention is recited as a means-plus-function claim under35 U.S.C. § 112, sixth paragraph, other aspects may likewise be embodiedas a means-plus-function claim, or in other forms, such as beingembodied in a computer-readable medium. (Any claims intended to betreated under 35 U.S.C. § 112, ¶ 6 will begin with the words “meansfor.”) Accordingly, the applicant reserves the right to add additionalclaims after filing the application to pursue such additional claimforms for other aspects of the invention.

We claim:
 1. A computer-implemented method comprising: accessing, by a host server, a file stored in a repository of a cloud-based collaboration environment and associated with a workspace in the cloud-based collaboration environment, the file having a file format of a plurality of different file formats and including a current version of the file and a version history including plurality of previous versions of the file; receiving, by the host server, a user selection specifying a portion of the file to track, the portion comprising a user-specified section of the file less than the whole file; generating, by the host server, a preview of the current version of the file, wherein generating the preview comprises converting the current version of the file from a format of the file to a target format of the preview; providing, by the host server to a client device, the generated preview for display by the client device without downloading the current version of the file; superimposing, by the host server, a transparent layer over the generated preview; receiving, by the host server, from the client device, an input to annotate the generated preview based on interaction of a user of the client device with the generated preview displayed by the client device; generating, by the host server, annotation data based on the received input to annotate the generated preview, wherein the annotation data has a format suitable for rendering on the transparent layer, wherein the annotation data is associated with the current version of the file and the user of the client device; storing, by the host server, the annotation data in in an annotation file in an annotation file database of the cloud-based collaboration environment, wherein the annotation file includes previous annotation data associated with each of one or more of the plurality of previous versions of the file and one or more users of a plurality of users other than the user of the client device and the annotations to the current version based on the received input; tracking, by the host server, the interaction of the user of the client device with the portion of the file to track indicated by the received user selection through the generated preview displayed by the client device in response to detecting an initial engagement by the user of the client device with the generated preview after initiating display of the generated preview; updating, by the host server, tracking data based on the tracking, wherein the tracking data indicates a frequency and duration of access of content within the file by the plurality of users in the cloud-based collaboration environment and content within a portion of the file represented in the generated preview displayed by the client device; storing, by the host server, the generated tracking data in a visual representation file; and generating, by the host server, for display at the client device, a visual representation of interaction with the file based on the tracking data stored in the visual representation file, wherein the visual representation indicates popular content within the file based on the frequency and duration of access of content in a plurality of portions of the file by the plurality of users in the collaboration environment and wherein the annotation file and visual representation file are stored separately from the file stored in the repository.
 2. The method of claim 1, wherein storing the annotation data further includes storing metadata associated with the annotation data in the annotation file.
 3. The method of claim 1, wherein storing the annotation data occurs when a notification to save the file is received.
 4. The method of claim 1, further comprising alerting authorized collaborators of the workspace when the input to annotate the generated preview is received.
 5. The method of claim 4, wherein alerting occurs by one or more of the following methods: email, including annotation details in a metadata associated with the file, in an event stream associated with the file, or a combination thereof.
 6. The method of claim 1, wherein the input to annotate the generated preview is entered by a requesting user via the client device, wherein the requesting user is an authorized collaborator of the workspace.
 7. The method of claim 6, wherein the requesting user uploaded the file to the cloud-based collaboration environment.
 8. The method of claim 1, wherein Adobe Flash is used to superimpose the transparent layer over the generated preview.
 9. The method of claim 1, wherein HTML5 is used to superimpose the transparent layer over the generated preview.
 10. The method of claim 1, wherein the format of the annotation data is simple vector graphics (SVG).
 11. The method of claim 1, further comprising; streaming, by the host server, the annotation data between a plurality of client devices associated with the plurality of users of the workspace in real time as the annotation data is generated.
 12. The method of claim 1, wherein the transparent layer is one of a plurality of transparent layers superimposed over the generated preview, each of the plurality of transparent layers configured to render annotations of a different one of the plurality of users of the workspace, wherein each of the plurality of users can simultaneously view the generated preview and input annotations in near real-time.
 13. The method of claim 1, wherein a first authorized collaborator of the workspace can view the file without the annotation data while a second authorized collaborator is annotating the file.
 14. The method of claim 1, wherein generating the preview of the current version of the file includes: identifying, by the host server, a current format of the current version of the file; specifying, by the host server, a target format appropriate for displaying as the preview of the file via a viewer module of the cloud-based collaboration environment; applying, by a network engine at the host server, a network graph to determine an optimum conversion scenario path defining a set of one or more of the plurality of conversion tools available in a cluster of conversion servers, the cluster of conversion servers communicatively coupled to the host server, the optimum conversion scenario path based at least on a priority cost of using each of the one or more of the plurality of available conversion tools; and causing, by the host server, one or more of the cluster of conversion servers to convert a copy of the current version of the file from the current format to the target format by processing the copy of the current version of the file using the set of one or more conversion tools defined by the optimum conversion scenario path.
 15. The method of claim 1, further comprising: receiving a request to view a previous version of the file with associated annotations; generating for display a preview of the previous version of file; wherein, the preview is a converted format of the previous version of the file configured for display via a viewer module of the cloud-based collaboration environment; accessing the annotation file including previous annotation data associated with the previous version of the file; and rendering on the transparent layer, the previous annotation data associated with the previous version of the file.
 16. The method of claim 1, further comprising storing a printable composite version of the file, wherein the composite file includes the annotations.
 17. The method of claim 1, wherein the specified portion of the file is based on any of a page, chapter, or heading associated with the file.
 18. The method of claim 14, wherein generating the preview of the file further includes: determining, by the host server, that conversion of the copy of the file from the current format to the target format failed; identifying a particular conversion tool in the set of one or more conversion tools defined by the optimum conversion path that caused the failure; re-applying the network graph to determine an alternative conversion scenario path defining an alternative set of one or more of the plurality of available conversion tools, the alternative set not including the identified particular conversion tool; and causing one or more of the cluster of conversion servers to convert the copy of the file from the current format to the target format by processing the copy of the file using the alternative set of one or more conversion tools defined by the alternative conversion scenario path.
 19. The method of claim 1, wherein the visual representation is a heat map, and further wherein the heatmap includes the plurality of portions of the file that are highlighted using a plurality of colors that indicate the frequency of interaction with each portion of the file by the plurality of users.
 20. A system comprising: a host server comprising a processor; a preview module executed by the processor of the host server, the preview module configured to generate a preview of a current version of a file stored in a repository of the cloud-based collaboration environment, wherein generating the preview comprises converting the current version of the file from a format of the file to a target format of the preview, and provide, to a client device, the generated preview for display by the client device without downloading the current version of the file; an annotation module executed by the processor of the host server, the annotation module configured to: superimpose a transparent layer over the generated preview; receive receive, from the client device, an input to annotate the generated preview based on interaction of a user of the client device with the generated preview displayed by the client device; generate annotation data based on the received input to annotate the generated preview, wherein the annotation data has a format suitable for rendering on the transparent layer and wherein the annotation data is associated with the current version of the file and the user of the client device; store the annotation data in in an annotation file in an annotation file database of the cloud-based collaboration environment, wherein the annotation file includes previous annotation data associated with each of one or more previous versions of the file and one or more users other than the user of the client device and the annotations to the current version based on the received input; and a tracking module executed by the processor of the host server, the tracking module configured to: receive a user selection specifying the portion of the file to track, the portion comprising a user-specified section of the file less that the whole file; track the user interaction with the portion of the file to track indicated by the received user selection through the generated preview displayed by the client device in response to detecting an initial engagement by the user of the client device with the generated preview after initiating display of the generated preview; update tracking data based on the tracking, wherein the tracking data indicates a frequency and duration of access of content within the file by a plurality of users in the cloud-based collaboration environment and content within a portion of the file represented in the generated preview displayed by the client device; store the generated tracking data in a visual representation file; and generate, for display at the client device, a visual representation of interaction with the file based on the tracking data stored in the visual representation file, wherein the visual representation indicates the indicates popular content within the file based on the frequency and duration of access of content a plurality of portions of the file by the plurality of users in the collaboration environment and wherein the annotation file and visual representation file are stored separately from the file stored in the repository.
 21. The system of claim 20, wherein the cloud-based collaboration environment further includes a cluster of conversion servers, the cluster of conversion services including a plurality of conversion tools configured to convert file formats, and wherein generating the preview of the current version of the file includes: identifying a current format of the current version of the file; specifying a target format appropriate for displaying as the preview of the file via a viewer module of the cloud-based collaboration environment applying a network graph to determine an optimum conversion scenario path defining a set of one or more of the plurality of conversion tools available in the cluster of conversion servers, the optimum conversion scenario path based at least in part on a priority cost of using each of the one or more of the plurality of available conversion tools; and causing one or more of the cluster of conversion servers to convert a copy of the current version of the file from the current format to the target format by processing the copy of the current version of the file using the set of one or more conversion tools defined by the optimum conversion scenario path.
 22. The system of claim 21, wherein generating the preview of the current version of the file further includes: determining, by the host server, that conversion of the copy of the current version of the file from the current format to the target format failed; identifying a particular conversion tool in the set of one or more conversion tools defined by the optimum conversion path that caused the failure; re-applying the network graph to determine an alternative conversion scenario path defining an alternative set of one or more of the plurality of available conversion tools, the alternative set not including the identified particular conversion tool; and causing one or more of the cluster of conversion servers to convert the copy of the current version of the file from the current format to the target format by processing the copy of the current version of the file using the alternative set of one or more conversion tools defined by the alternative conversion scenario path.
 23. The system of claim 20, wherein storing the annotation data further includes storing metadata associated with the annotation data in the annotation file.
 24. The system of claim 20, wherein the file is a video file, and the tracking module is further configured to track a duration of display time of the generated preview, and further wherein the visual representation includes a duration of display time of one or more of the plurality of sections of the video file.
 25. The system of claim 20, wherein the annotation module is further configured to alert authorized collaborators of the file when the input to annotate the generated preview is received.
 26. The system of claim 20, wherein the annotation module is further configured to stream the annotation data between a plurality of client devices associated with a plurality of authorized collaborators in real time as the annotation data is generated.
 27. The system of claim 20, wherein the transparent layer is one of a plurality of transparent layers superimposed over the generated preview, each of the plurality of transparent layers configured to render annotations of a different one of plurality of users, wherein each of the plurality of users can simultaneously view the generated preview and annotations in near real-time as annotation data is generated.
 28. A non-transitory, computer-readable medium comprising a set of instructions stored therein which, when executed by a processor, causes the processor to provide multimedia content previews by: accessing a file stored in a repository of a cloud-based collaboration environment and associated with a workspace in the cloud-based collaboration environment, the file having a file format of a plurality of different file formats and including a current version of the file and a version history including plurality of previous versions of the file; receiving a user selection specifying a portion of the file to track, the portion comprising a user-specified section of the file less than the whole file; generating a preview of the current version of the file, wherein generating the preview comprises converting the current version of the file from a format of the file to a target format of the preview; providing, to a client device, the generated preview for display by the client device without downloading the current version of the file; superimposing a transparent layer over the generated preview; receiving from the client device, an input to annotate the generated preview based on interaction of a user of the client device with the generated preview displayed by the client device; generating annotation data based on the received input to annotate the generated preview, wherein the annotation data has a format suitable for rendering on the transparent layer, wherein the annotation data is associated with the current version of the file and the user of the client device; storing the annotation data in in an annotation file in an annotation file database of the cloud-based collaboration environment, wherein the annotation file includes previous annotation data associated with each of one or more of the plurality of previous versions of the file and one or more users of a plurality of users other than the user of the client device and the annotations to the current version based on the received input; tracking the interaction of the user of the client device with the portion of the file to track indicated by the received user selection through the generated preview displayed by the client device in response to detecting an initial engagement by the user of the client device with the generated preview after initiating display of the generated preview; updating tracking data based on the tracking, wherein the tracking data indicates a frequency and duration of access of content within the file by the plurality of users in the cloud-based collaboration environment and content within a portion of the file represented in the generated preview displayed by the client device; storing the generated tracking data in a visual representation file; and generating for display at the client device, a visual representation of interaction with the file based on the tracking data stored in the visual representation file, wherein the visual representation indicates popular content within the file based on the frequency and duration of access of content in a plurality of portions of the file by the plurality of users in the collaboration environment and wherein the annotation file and visual representation file are stored separately from the file stored in the repository.
 29. The non-transitory, computer-readable medium of claim 28, wherein storing the annotation data further includes storing metadata associated with the annotation data in the annotation file.
 30. The non-transitory, computer-readable medium of claim 28, wherein storing the annotation data occurs when a notification to save the file is received.
 31. The non-transitory, computer-readable medium of claim 28, wherein the instructions further cause the processor to alert authorized collaborators of the workspace when the input to annotate the generated preview is received.
 32. The non-transitory, computer-readable medium of claim 28, wherein the input to annotate the generated preview is entered by a requesting user via the client device, wherein the requesting user is an authorized collaborator of the workspace.
 33. The non-transitory, computer-readable medium of claim 28, wherein the instructions further cause the processor to stream the annotation data between a plurality of client devices associated with a plurality of authorized collaborators of the workspace in real time as the annotation data is generated.
 34. The non-transitory, computer-readable medium of claim 28, wherein generating the preview of the current version of the file includes: identifying a current format of the current version of the file; specifying a target format appropriate for displaying as the preview of the file via a viewer module of the cloud-based collaboration environment; applying a network graph to determine an optimum conversion scenario path defining a set of one or more of the plurality of conversion tools available in a cluster of conversion servers, the cluster of conversion servers communicatively coupled to the host server, the optimum conversion scenario path based at least on a priority cost of using each of the one or more of the plurality of available conversion tools; and causing one or more of the cluster of conversion servers to convert a copy of the current version of the file from the current format to the target format by processing the copy of the current version of the file using the set of one or more conversion tools defined by the optimum conversion scenario path.
 35. The non-transitory, computer-readable medium of claim 28, wherein the instructions further cause the processor to: receive a request to view a previous version of the file with associated annotations; generate for display a preview of the previous version of file, wherein the preview is a converted format of the previous version of the file configured for display via a viewer module of the cloud-based collaboration environment; access the annotation file including previous annotation data associated with the previous version of the file; and render on the transparent layer, the previous annotation data associated with the previous version of the file. 